/*
    位运算的骚操作

    前置知识：讲解003-二进制和位运算、讲解030-异或运算的骚操作
    特别提醒：Python的同学实现位运算的题目需要特别注意，需要自己去手动处理溢出和符号扩展等问题
    比如：(n << shift_amount) & 0xFFFFFFFF

    位运算有很多奇技淫巧，位运算的速度非常快，仅次于赋值操作，常数时间极好！

    这节课展示一下先贤的功力！骚就完了！

    关于位运算还有非常重要的内容：
    N皇后问题用位运算实现，将在【必备】课程里讲到
    状态压缩的动态规划，将在【扩展】课程里讲到

    ================================================

    题目1 判断一个整数是不是2的幂
    题目2 判断一个整数是不是3的幂
    题目3 返回大于等于n的最小的2的幂
    题目4 区间[left, right]内所有数字 & 的结果

    题目5 反转一个二进制的状态，不是0变1、1变0，是逆序。超自然版
    题目6 返回一个数二进制中有几个1。超自然版，看完佩服大牛的脑洞，能爽一整天

    题目5和题目6代码看着跟脑子有大病一样，承认很强但似乎有点太嘚瑟了，是这样吗？
    不是的，条件判断相比于赋值、位运算、算术运算是稍慢的，所以其实有现实意义
    但是不需要追求在练算法过程中尽量少写条件判断，
    那样会带来很多不必要的困扰，还是要写尽量直白、尤其是自己能理解的代码最好
    大牛的实现欣赏完理解就好，下次当模版直接用

*/